Il Architettura dell'insieme di istruzioni (ISA) funge da livello fondamentale di astrazione livello di astrazione e un contratto formale tra software e hardware. Mentre linguaggi ad alto livello come C nascondono la complessità, l'ISA espone lo stato architetturale—la configurazione precisa dei registri del processore e della memoria.
1. Lo stato architetturale
Un processore x86-64 definisce il suo stato attraverso diversi componenti chiave:
- Contatore del programma (%rip): Contiene l'indirizzo dell'istruzione successiva.
- File dei registri interi: 16 registri generali (ad esempio,
%rax,%rbx) che memorizzano valori a 64 bit. - Codici di condizione: Bandiere (ZF, SF, CF, OF) per il flusso di controllo.
- Registri vettoriali: Come ad esempio registri YMM (256 bit) per operazioni SIMD.
2. Astrazione della memoria
Il codice macchina vede la memoria come un'ampia matrice indirizzabile per byte. Sebbene l'x86-64 supporti indirizzi virtuali a 64 bit, le implementazioni attuali spesso utilizzano uno spazio di indirizzamento a 48 bit ($2^{48}$ byte). Classifichiamo le dimensioni dei dati come Parola (16 bit), Doppia parola (32 bit) e Quadrupla parola (64 bit).
3. Evoluzione e compatibilità
Guidato da La legge di Moore, Intel si è evoluto dall' 8086 al Core i7 Haswell. L'ISA garantisce compatibilità verso il basso, consentendo al codice macchina legacy di essere eseguito su hardware moderni con multi-core e iper-threading.